function WarlockG1zStar3()

	if not afflictiondots then
   		afflictiondots = CreateFrame("GameTooltip", "afflictiondots", UIParent, "GameTooltipTemplate")
   		afflictiondots:SetOwner(UIParent, "ANCHOR_NONE")
	end

	_ThrottleFrame()
	if ccrPIIC() then pullallunitsm("Immolate") end
	-- if isAoE == nil then AoEToggle() end
	if _ImmolateThrottle == nil then _ImmolateThrottle = 0 end
	if nMobTargetCount == nil then nMobTargetCount = 0 end
	if not ccrPHB(109773) then ccrCast(109773) return end -- dark intent
	if ccrPIIC() then

		nMobTargetCount = ccrTargetCount(8)

		if ThokThrottle and GetTime() < ThokThrottle and ccrPICAOCH() then
			if ccrPICA() then
				local _, _, _, _, _, tEnd = UnitCastingInfo("player")
				if tEnd > ThokThrottle then SpellStopCasting() end
			else
				local _, _, _, _, _, tEnd = UnitChannelInfo("player")
				if tEnd > ThokThrottle then SpellStopCasting() end
			end
		end
	end
	if ccrPIIC() and ccrValidTarget() then
		InterruptTrainer()
		if SCA(1490) and not ccrTargetHasDebuff("Master Poisoner", 1) and not ccrTargetHasDebuff("Curse of the Elements", 1) and not ccrTargetHasDebuff("Fire Breath", 1) and not ccrTargetHasDebuff("Lightning Breath", 1) then
			ccrCastAttack(1490)
			return
		end -- Magic Debuff
		if useCDS and SIR(33702) then ccrCast(33702) end -- blood fury orc racial
		if useCDS and SIR(113858) and (not ccrPlayerHasTalent("Archimonde's Darkness") or (ccrPlayerHasTalent("Archimonde's Darkness") and (GetSpellCharges(113858) == 2 or ccrPHB(146218) or ccrTargetHealth() <= 10))) then
			ccrCast(113858)
		end -- dark soul
	end
	if nMobTargetCount > 3 and ccRS.Manual_AoE then
		if useCDS and SIR(112921) then
			if ccrPlayerHasTalent("Grimoire of Supremacy") then
				ccrCast(112921)
				CastAtLocation(Target:GetLocation())
				return
			else
				ccrCast(1122)
				CastAtLocation(Target:GetLocation())
				return
			end
		end -- Abyssal
		if SIR(104232) and not ccrPHB(104232) then
			ccrCast(104232)
			CastAtLocation(Target:GetLocation())
			return
		end -- RoF
		if ccrEmbers() > 9 and not ccrPHB(108683) then ccrCast(108683) end -- FnB
		if ccrEmbers() > 14 and SCA(108686) and not ccrTargetHasDebuff(108686) then ccrCastAttack(108686) return end -- Immolate AoE
		if SCA(108685) then ccrCastAttack(108685) return end -- conflagrate AoE
		if SCA(114654) then ccrCastAttack(114654) return end -- incinerate AoE
		if SCA(29722) then ccrCastAttack(29722) return end -- incinerate
		return
	end
	if ccrPIIC() and ccrValidTarget() then
		if ccrPHB(108683) then CancelUnitBuff("player", "Fire and Brimstone") end
		if useCDS and SIR(112927) then
			if ccrPlayerHasTalent("Grimoire of Supremacy") then
				ccrCast(112927)
				return
			else
				ccrCast(18540)
				return
			end
		end -- doomguard
		if nMobTargetCount > 1 and not ccrPHB(104232) then
			Target:Face()
			ccrCast(104232)
			CastAtLocation(Target:GetLocation())
			return
		end -- RoF
		-- if SIR(80240) and then return end -- havoc support
		if SCA(17877) and (ccrEmbers() > 35 or ccrPM() <= 20 or ccrPHB(80240) or ccrPHB(146218)) then
			Target:Face()
			ccrCastAttack(17877)
			return
		end -- Shadowburn
		if SCA(116858) and ccrTargetHealth() > 20 and (not ccrPHBS(117828, 3) or (nMobTargetCount > 1 and select(7, GetSpellInfo(29722))/1000 < 1)) and (ccrEmbers()/10 > (4.5-nMobTargetCount) or (ccrPHB(146218) and not ccrPHBR(146218, select(7, GetSpellInfo(116858))/1000)--[[skull banner]])) then
			Target:Face()
			ccrCastAttack(116858)
			return
		end -- chaos bolt need to implement skull banner
		if SCA(116858) and ccrTargetHealth() > 20 and ccrPHBS(80240, 3) and not ccrPHBR(80240, select(7, GetSpellInfo(116858))/1000) then
			Target:Face()
			ccrCastAttack(116858)
			return
		end -- chaos bolt havoc need to implement auto havoc
		if SIR(348) and not ccrPIM() and ccRS.Manual_AoE and #tNoObjectImmolate > 0 then
			for i = 1, #tNoObjectImmolate do
				if _G[rawget(tNoObjectImmolate, i):GetGUID().." ImmolateThrottle"] == nil then _G[rawget(tNoObjectImmolate, i):GetGUID().." ImmolateThrottle"] = 0 end
				if _ImmolateThrottle == 0 and _G[rawget(tNoObjectImmolate, i):GetGUID().." ImmolateThrottle"] == 0 then
					rawget(tNoObjectImmolate, 1):Face()
					rawget(tNoObjectImmolate, 1):CastSpellByName("Immolate")
					return
				end
			end
		end
		-- immolate cycle targets support
		if _G[Target:GetGUID().." ImmolateOldCrit"] == nil then _G[Target:GetGUID().." ImmolateOldCrit"] = 0 end
		if _G[Target:GetGUID().." ImmolateThrottle"] == nil then _G[Target:GetGUID().." ImmolateThrottle"] = 0 end
		if _ImmolateThrottle == 0 and not ccrPIM() and _G[Target:GetGUID().." ImmolateThrottle"] == 0 and SCA(348) and ((15/(3/(1+UnitSpellHaste("player")/100))) * GetSpellCritChance(3) > 3 * TicksRemaining(348) * _G[Target:GetGUID().." ImmolateOldCrit"]) then -- target guid
			Target:Face()
			ccrCastAttack(348)
			return
		end -- immolate single target
		if SCA(17962) and GetSpellCharges(17962) == 2 and not ccrPHB(80240) then
			Target:Face()
			ccrCastAttack(17962)
			return
		end -- conflagrate
		if ccrPIM() and not ccrPHB(104232) and SIR(104232) then
			ccrCast(104232)
			CastAtLocation(Target:GetLocation())
			return
		end  -- moving rain of fire
		if SCA(17962) and (ccrTargetHealth() <= 10 or not ccrPHB(117828)) then
			Target:Face()
			ccrCastAttack(17962)
			return
		end -- conflagrate
		if SCA(29722) and ccrPlayerHasTalent("Kil'jaeden's Cunning") then
			if not ccrPIM() then Target:Face() end
			ccrCastAttack(29722)
			return
		elseif SCA(29722) and not ccrPlayerHasTalent("Kil'jaeden's Cunning") and not ccrPIM() then
			Target:Face()
			ccrCastAttack(29722)
			return
		end -- incinerate
		if SCA(77799) and ccrPIM() then
			ccrCastAttack(77799)
			return
		end -- fel flame
	end
end